package leetcode_700;

/**
 *@author 周杨
 *BeautifulArrangementII_667 美丽的排列是指一个数组里每两个相邻元素的差值有k种结果 n是排列1到n个数
 *describe:前面n-1个数用最大数和最小数排列 后面直接顺序排列 AC 9%
 *2018年9月29日 下午1:57:03
 */
public class BeautifulArrangementII_667 {
	public static void main(String[] args) {
		BeautifulArrangementII_667 test=new BeautifulArrangementII_667();
		test.constructArray(3, 2);
	}
	public int[] constructArray(int n, int k) {
		 if(n==1)
				return new int[] {1};
			boolean flag=false;//false时小指针动
			int i=1,j=n,index=0;
			int res[]=new int[n];
			while(k>0) {
				if(!flag) {
					res[index++]=i++;
				}
				else {
					res[index++]=j--;
				}
	            --k;
				flag=!flag;
			}
			if(!flag) {//从大指针开始减
				for(int p=j;p>=i;--p) {
					res[index++]=p;
				}
			}
			else {
				for(int p=i;p<=j;++p) {
					res[index++]=p;
				}
			}
			return res;
	}
}
